summaryrefslogtreecommitdiff
path: root/app/[lng]/partners/(partners)/pq_new/page.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'app/[lng]/partners/(partners)/pq_new/page.tsx')
-rw-r--r--app/[lng]/partners/(partners)/pq_new/page.tsx49
1 files changed, 46 insertions, 3 deletions
diff --git a/app/[lng]/partners/(partners)/pq_new/page.tsx b/app/[lng]/partners/(partners)/pq_new/page.tsx
index fb77ce0e..89a646a8 100644
--- a/app/[lng]/partners/(partners)/pq_new/page.tsx
+++ b/app/[lng]/partners/(partners)/pq_new/page.tsx
@@ -51,6 +51,12 @@ function getStatusBadge(status: string) {
return <Badge variant="default">승인됨</Badge>;
case "REJECTED":
return <Badge variant="destructive">거부됨</Badge>;
+ case "QM_REVIEWING":
+ return <Badge variant="secondary">QM 검토 중</Badge>;
+ case "QM_APPROVED":
+ return <Badge variant="default">최종 승인됨</Badge>;
+ case "QM_REJECTED":
+ return <Badge variant="destructive">최종 거부됨</Badge>;
default:
return <Badge variant="outline">{status}</Badge>;
}
@@ -65,6 +71,39 @@ function getFormattedDate(date: Date | null) {
}).format(new Date(date));
}
+function renderPQItems(pqItems: unknown) {
+ if (!pqItems) return "-";
+
+ if (typeof pqItems === "string") {
+ return pqItems || "-";
+ }
+
+ if (Array.isArray(pqItems)) {
+ if (pqItems.length === 0) return "-";
+
+ return (
+ <div className="flex flex-wrap gap-1">
+ {pqItems.map((item: any, idx: number) => {
+ // materialGroupCode/materialGroupDescription 형식 지원 (새로운 형식)
+ const displayName = item?.materialGroupDescription || item?.itemName || "";
+ const displayCode = item?.materialGroupCode || item?.itemCode || "";
+
+ if (!displayName && !displayCode) return null;
+
+ return (
+ <Badge key={idx} variant="outline">
+ {displayName || displayCode || "품목"}
+ {displayCode && displayName !== displayCode ? ` (${displayCode})` : ""}
+ </Badge>
+ );
+ })}
+ </div>
+ );
+ }
+
+ return "-";
+}
+
export default async function PQListPage({ params }: IndexPageProps) {
// 캐시 비활성화
noStore();
@@ -212,6 +251,7 @@ export default async function PQListPage({ params }: IndexPageProps) {
<TableHead>유형</TableHead>
<TableHead>PQ 번호</TableHead>
<TableHead>프로젝트</TableHead>
+ <TableHead>PQ 품목</TableHead>
<TableHead>상태</TableHead>
<TableHead>요청일</TableHead>
<TableHead>제출일</TableHead>
@@ -222,14 +262,14 @@ export default async function PQListPage({ params }: IndexPageProps) {
<TableBody>
{pqList.length === 0 ? (
<TableRow>
- <TableCell colSpan={8} className="text-center py-8 text-muted-foreground">
+ <TableCell colSpan={9} className="text-center py-8 text-muted-foreground">
요청된 PQ가 없습니다.
</TableCell>
</TableRow>
) : (
pqList.map((pq) => {
- const canEdit = ["REQUESTED", "IN_PROGRESS", "REJECTED"].includes(pq.status);
- const canView = ["SUBMITTED", "APPROVED"].includes(pq.status);
+ const canEdit = ["REQUESTED", "IN_PROGRESS", "REJECTED", "SAFETY_APPROVED", "QM_REVIEWING"].includes(pq.status);
+ const canView = ["SUBMITTED", "APPROVED", "QM_APPROVED", "SAFETY_REJECTED", "QM_REJECTED"].includes(pq.status);
return (
<TableRow key={pq.id}>
@@ -251,6 +291,9 @@ export default async function PQListPage({ params }: IndexPageProps) {
{pq.projectName || "-"}
</TableCell>
<TableCell>
+ {renderPQItems(pq.pqItems)}
+ </TableCell>
+ <TableCell>
{getStatusBadge(pq.status)}
</TableCell>
<TableCell>